package com.hpin.mlxteacher.utils;


import android.app.ProgressDialog;
import android.content.Context;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.hpin.mlxteacher.base.MyApplication;

import java.util.HashMap;
import java.util.Map;

/**
 * 网络请求工具
 * Created by Aaron on 2015/7/16.
 */
public class HttpUtil {


    private static HttpUtil httpUtil = new HttpUtil();

    public static HttpUtil getInstance() {
        return httpUtil;
    }


    public void setPostRequest(String message, final Context ctx, String url, final String params, final SuccessListener success, final FailListener fail) {

        final ProgressDialog dialog = new ProgressDialog(ctx);

        dialog.setTitle(message);
        dialog.setMessage(Constant.WAIT);
        dialog.show();


        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {


                LogUtil.e("TAG", "success 成功返回的json======>" + response);

                if (success != null) {
                    success.setOnSuccessListener(response);
                }

                if (dialog!=null && dialog.isShowing())
                    dialog.dismiss();

            }

        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {

                if (dialog!=null && dialog.isShowing())
                    dialog.dismiss();

                Toast.makeText(ctx, "请求数据失败!", Toast.LENGTH_SHORT).show();
                LogUtil.e("TAG", "fail=====>" + error.getMessage());

                error.printStackTrace();

                if (fail != null) {
                    fail.setOnFailListener();
                }

            }

        }) {

            protected Map<String, String> getParams() {
                Map<String, String> param = new HashMap<String, String>();
                param.put("data", params);

                return param;
            }

        };
        ((MyApplication) ctx.getApplicationContext()).addToRequestQueue(stringRequest, url);

    }

    public interface SuccessListener {

          void setOnSuccessListener(String str);

    }


    public interface FailListener {

         void setOnFailListener();

    }

//    /**
//     *
//     * @param httpUrl 请求的url
//     * @param parmas 请求的参数
//     * @return
//     */
//    public static String setPostRequest(String httpUrl, String parmas) {
//
//        String resultData = "";
//        URL url = null;
//        try {
//            // 构造一个URL对象
//            url = new URL(httpUrl);
//        } catch (MalformedURLException e) {
//            //
//        }
//        if (url != null) {
//            try {
//                // 使用HttpURLConnection打开连接
//                HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
//                //设置是否向httpUrlConnection输出，因为这个是post请求，参数要放在http正文内，因此需要设为true, 默认情况下是false;
//                urlConn.setDoOutput(true);
//                //设置是否从httpUrlConnection读入，默认情况下是true;
//                urlConn.setDoInput(true);
//                // 设置以POST方式
//                urlConn.setRequestMethod("POST");
//                // Post 请求不能使用缓存
//                urlConn.setUseCaches(false);
//                urlConn.setInstanceFollowRedirects(true);
//                //设置连接超时时间10秒
//                urlConn.setConnectTimeout(10000);
//                //设置从主机读取数据超时时间10秒
//                urlConn.setReadTimeout(10000);
//                //设定传送的内容类型是可序列化的java对象 (如果不设此项,在传送序列化对象时,当WEB服务默认的不是这种类型时可能抛java.io.EOFException)
//                urlConn.setRequestProperty("Content-Type", "application/x-java-serialized-object");
////                urlConn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
//                // 连接，从postUrl.openConnection()至此的配置必须要在connect之前完成，
//                // 要注意的是connection.getOutputStream会隐含的进行connect。
//                urlConn.connect();
//                // DataOutputStream流
//                DataOutputStream out = new DataOutputStream(urlConn.getOutputStream());
//                // 要上传的参数:code=888032100100&m=get_coolimages&p=1&filter=all
//                // 正文，正文内容其实跟get的URL中'?'后的参数字符串一致
////                String content = "code=888032100100&m=get_coolimages&p=1&filter=" + URLEncoder.encode("all", "utf-8");
//                // 将要上传的内容写入流中
//                out.writeBytes(parmas);
//                // 刷新、关闭
//                out.flush();
//                out.close();
//
//                // 得到读取的内容(流)
//                InputStreamReader in = new InputStreamReader(urlConn.getInputStream());
//                // 为输出创建BufferedReader
//                BufferedReader buffer = new BufferedReader(in);
//                String inputLine = null;
//                // 使用循环来读取获得的数据
//                while (((inputLine = buffer.readLine()) != null)) {
//                    // 我们在每一行后面加上一个"\n"来换行
//                    resultData += inputLine + "\n";
//                }
//                // 关闭InputStreamReader
//                in.close();
//                return resultData;
//            } catch (Exception e) {
//                //
//                e.printStackTrace();
//            }
//        }
//        return resultData;
//    }


}
